The present technology relates to a memory device and to techniques for programming memory cells. Memory devices can include phase change memory cells which store one or more bits of data based on a variable resistance level. In one approach, a set operation is used to place a memory cell in a low resistance state, representing one bit value, and a reset operation is used to place the memory cell in a high resistance state, representing another bit value. The transition from one state to another can involve passing a current through the memory cell. However, various challenges are presented in operating such devices.